Host processor systems may store and retrieve data using a storage device containing a plurality of host interface units (I/O modules), physical storage units (e.g., disk drives, solid state drives), and disk interface units (disk adapters). The host systems access the storage device through a plurality of channels provided therewith. Host systems provide data and access control information through the channels to the storage device and the storage device provides data to the host systems also through the channels. The host systems do not address the physical storage units of the storage device directly, but rather, access what appears to the host systems as a plurality of logical volumes. The logical volumes may or may not correspond to the physical storage units. Allowing multiple host systems to access the single storage device unit allows the host systems to share data stored therein.
Communication between a host processor system and a storage device may be performed using a connection protocol, such as FICON, where command mode control and status information is exchanged between the host processor system and the storage device to facilitate exchanging data between the host and the storage device. The control and status information includes instructions provided by the host to the storage device such as instructions to read data, instructions to write data, etc. and includes status information returned by the storage device to the host in response thereto.
The FICON protocol has been updated to use transport mode control and status information that is exchanged between the host processor system and the storage device to facilitate exchanging data between the host and the storage device. The transport mode is more efficient for transferring data than the command mode because the transport mode relies on less back and forth communication between the entities and, in some cases, uses less commands/status returns than comparable commands/status returns used for command mode data transfers. A significant number of storage devices have been reconfigured to use the transport mode. Similarly, drivers for host systems have been rewritten to use transport mode in a way that does not require any rewriting/adjustment of applications that use the drivers in a conventional manner (i.e., applications that make conventional high level driver calls such as read, write, put, get, etc.).
In some cases, an application on a host may have been written in a way that bypasses high level driver calls to directly call low level routines to transmit command mode data and receive command mode status information. Of course, just as with drivers on a host, it may be possible to rewrite the application to use transport mode instead. However, there may be instances where it is not feasible to do so, such as in cases where original source code of the application is not available. If such an application cannot be modified, there is no mechanism to convert the application to use transport mode I/O operations instead of command mode operations. In other cases, even if source code is available, it may not be deemed economically advantageous to expend resources to rewrite the application.
Accordingly, it is desirable to provide a mechanism that provides transport mode I/O operations for an application that uses command mode I/O operations without needing to modify the application.